/* Copyright (c) 2021 Xie Meiyi(xiemeiyi@hust.edu.cn) and OceanBase and/or its affiliates. All rights reserved.
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
// Created by Longda on 2021/4/13.
//

// 网络连接内容的一个头文件

#ifndef __SRC_OBSERVER_NET_CONNECTION_CONTEXT_H__
#define __SRC_OBSERVER_NET_CONNECTION_CONTEXT_H__
// infdef define endif都是一个头文件的保护性命名措施，不用去管

#include <event.h>
#include <ini_setting.h>

class Session;
// 在这里定义了一个Session类

// 定义了一个结构体，名字就叫ConnectionContext，这个结构体里面含有的内容是连接的一些参数
typedef struct _ConnectionContext {
  Session *session;
  int fd;
  struct event read_event;
  pthread_mutex_t mutex;
  char addr[24];
  char buf[SOCKET_BUFFER_SIZE];
  // 结构体中包含了一个session类
  // 一个int型变量df
  // 一个event型的结构体 read_event
  // pthread_mutex_t是一个互斥锁，用来引入线程同步的机制
  // 一个char类型的数组，名字叫做addr
  // SOCKET_BUFFER_SIZE是配置客户端连接的缓存区长度，声明了一个char类型的数组，大小为缓存区长度，名字为buf
} ConnectionContext;

#endif  //__SRC_OBSERVER_NET_CONNECTION_CONTEXT_H__
